package com.hxh.generater.springBoot.simple.gen;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hxh.entity.TemplateConfig;
import com.hxh.entity.po.ClassInfo;
import com.hxh.generater.springBoot.genBase.GenCRUDTools;
import com.hxh.generater.vue.simple.gen.GenSimpleVue;

import java.io.IOException;

public class GenSimpleCRUDTools implements GenCRUDTools {
    /**
     * 生成某个表的所有crud代码
     *
     * @param packageName
     * @param classInfo
     * @return
     * @throws IOException
     */
    @Override
    public JSONArray process(String packageName, ClassInfo classInfo, TemplateConfig templateConfig) throws Exception {
        JSONArray jsonArray = new JSONArray();

        GenSimpleTableCRUD genSimpleTableCRUD = new GenSimpleTableCRUD();

        String entityStr = genSimpleTableCRUD.generationEntity(packageName, classInfo, templateConfig);
        JSONObject entityJson = new JSONObject();
        entityJson.put("name", "entity");
        entityJson.put("code", entityStr);
        entityJson.put("type", "java");
        jsonArray.add(entityJson);

        String entityInputStr = genSimpleTableCRUD.generationEntityInput(packageName, classInfo, templateConfig);
        JSONObject entityInputJson = new JSONObject();
        entityInputJson.put("name", "entityInput");
        entityInputJson.put("code", entityInputStr);
        entityInputJson.put("type", "java");
        jsonArray.add(entityInputJson);

        String mapperStr = genSimpleTableCRUD.generationMapper(packageName, classInfo, templateConfig);
        JSONObject mapperJson = new JSONObject();
        mapperJson.put("name", "mapper");
        mapperJson.put("code", mapperStr);
        mapperJson.put("type", "xml");
        jsonArray.add(mapperJson);

        String daoStr = genSimpleTableCRUD.generationDaoClass(packageName, classInfo, templateConfig);
        JSONObject daoJson = new JSONObject();
        daoJson.put("name", "dao");
        daoJson.put("code", daoStr);
        daoJson.put("type", "java");
        jsonArray.add(daoJson);

        String serviceStr = genSimpleTableCRUD.generationServiceImplClass(packageName, classInfo, templateConfig);
        JSONObject serviceJson = new JSONObject();
        serviceJson.put("name", "service");
        serviceJson.put("code", serviceStr);
        serviceJson.put("type", "java");
        jsonArray.add(serviceJson);

        String controllerStr = genSimpleTableCRUD.generationControllerClass(packageName, classInfo,templateConfig );
        JSONObject controllerJson = new JSONObject();
        controllerJson.put("name", "controller");
        controllerJson.put("code", controllerStr);
        controllerJson.put("type", "java");
        jsonArray.add(controllerJson);

        GenSimpleVue genSimpleVue = new GenSimpleVue();

        String viewStr = genSimpleVue.generationView(classInfo);
        JSONObject viewJson = new JSONObject();
        viewJson.put("name", "vueView");
        viewJson.put("code", viewStr);
        viewJson.put("type", "javascript");
        jsonArray.add(viewJson);

        String apiStr = genSimpleVue.generationApi(classInfo);
        JSONObject apiJson = new JSONObject();
        apiJson.put("name", "vueApi");
        apiJson.put("code", apiStr);
        apiJson.put("type", "javascript");
        jsonArray.add(apiJson);

        return jsonArray;
    }
}
